package ArrayList;
/*
 * 并发修改异常：
 * Exception in thread "main" java.util.ConcurrentModificationException
 * 迭代器是依赖于集合的，相当于集合的一个副本，当迭代器在操作的时候，如果发现和集合不一样，则抛出异常
 * 解决方案：
 * 		1、别使用迭代器
 * 		2、在使用迭代器进行遍历的时候，使用迭代器来进行修改
 */
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ArrayListDemo {
	public static void main(String[] args) {
//		method1 ();
//		method2();
//		method3();
		List c = new ArrayList();
		c.add("hello");
		c.add("world");
		c.add("java");
		
		ListIterator list = c.listIterator();
		while(list.hasNext()) {
			String s = (String)list.next();
			if(s.equals("java")) {
				list.add("android");
			}
		}
		System.out.println(c);
	}

	private static void method3() {
		Collection c =  new ArrayList();
		c.add("hello");
		c.add("world");
		c.add("java");
		if(c.contains("java")) {
			c.add("android");
		}
		System.out.println(c);
	}

	private static void method2() {
		Collection c =  new ArrayList();
		c.add("hello");
		c.add("world");
		c.add("java");
		Iterator it = c.iterator();
//		System.out.println(it.next());
//		System.out.println(it.next());
//		System.out.println(it.next());
//		System.out.println(it.next());
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}

	private static void method1() {
		Collection c =  new ArrayList();
		c.add("hello");
		c.add("world");
		c.add("java");
		Object[] objs = c.toArray();
		for(int i=0;i<objs.length;i++) {
			System.out.println(objs[i]);
		}
	}
}
